package cn.stylefeng.guns.modular.car.controller;

import cn.stylefeng.guns.modular.car.util.AliOssUtil;
import cn.stylefeng.roses.kernel.scanner.api.annotation.ApiResource;
import cn.stylefeng.roses.kernel.scanner.api.annotation.PostResource;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.UUID;

/**
 * ┌─┐       ┌─┐ + +
 * ┌──┘ ┴───────┘ ┴──┐++
 * │                 │
 * │       ───       │++ + + +
 * ███████───███████ │+
 * │                 │+
 * │       ─┴─       │
 * │                 │
 * └───┐         ┌───┘
 * │         │
 * │         │   + +
 * │         │
 * │         └──────────────┐
 * │                        │
 * │                        ├─┐
 * │                        ┌─┘
 * │                        │
 * └─┐  ┐  ┌───────┬──┐  ┌──┘  + + + +
 * │ ─┤ ─┤       │ ─┤ ─┤
 * └──┴──┘       └──┴──┘  + + + +
 * 神兽保佑
 * 代码无BUG!
 */
@RestController
@ApiResource(name = "文件")
public class FileController {

    /**
     * 文件上传*/

    @PostResource(name = "文件上传",path = "/file/upload",requiredPermission = false,requiredLogin = false)
    public String upload(@RequestPart MultipartFile file) throws IOException {
        //1.验证内容是否为空
        if(!file.isEmpty()){
            //2.获取内容
            byte[] data=file.getBytes();
            String filename=rename(file.getOriginalFilename());
            //3.上传到阿里云的Oss
            AliOssUtil.upload(filename,data);
            //4.返回访问地址
            return AliOssUtil.getPath(filename,1);
        }
        return "亲，没有上传文件!";
    }
    /**
     * 对文件名进行长度限制和重命名（保证唯一性）*/
    public String rename(String name){
        //1.限制长度
        if(name.length()>40){
            name=name.substring(name.length()-40);
        }
        //2.重命名 保证唯一性
        return UUID.randomUUID().toString()+"_"+name;
    }
}
